package model;
	

public class Definicoes {

    // Enumeracao dos simbolos que serao classificados em tokens, lexico
    public enum Lexemas {

        MENOS("-"),
        PONTO("."),
        VIRGULA(","),
        PONTO_VIRGULA(";"),
        ABRE_PARENTESES("("),
        FECHA_PARENTESES(")"),        
        DOIS_PONTOS(":"),
        IGUAL("="),
        MENOR("<"),
        MAIOR(">"),
        MAIOR_IGUAL(">="),
        MENOR_IGUAL("<="),
        MAIS("+"),
        VEZES("*"),
        DIV("/"),
        ABRE_COLCHETES("["),
        FECHA_COLCHETES("]"),
        ABRE_CHAEVES("{"),
        FECHA_CHAVES("}"),
        ABRE_COMETARIO_PARENTESES("(*"),
        FECHA_COMETARIO_PARENTESES("*)"),
        COMENTARIO_LINHA("//"),
        DIFERENTE("<>"),
        RECEBE(":="),
        ASPAS_SIMPLES("'"),
        // palavras reservadas
        FALSE("false"),
        TRUE("true"),
        PROGRAM("program"),
        BEGIN("begin"),
        END("end"),
        VAR("var"),
        PROCEDURE("procedure"),
        FUNCTION("function"),
        IF("if"),
        THEN("then"),
        ELSE("else"),
        WHILE("while"),
        DO("do"),
        OR("or"),
        AND("and"),
        INTEGER("integer"),
        REAL("real"),
        READ("read"),
        WRITE("write"),
        CONST("const"),
        CHAR("char"),
        STRING("string"),
        REPEAT("repeat"),
        BREAK("break"),
        CONTINUE("continue"),
        UNTIL("until");

        Lexemas(String simbolo) {
            this.lexema = simbolo;
        }

        // String lexema refere-se ao valor "passado por parametro" em cada enum
        private String lexema;

        // Retorna valor do lexema
        public String getLexema() {
            return lexema;
        }
    }

    // Identifica os Tipos de Token classificados, lexico
    public enum NomeTokens {

        MENOS,
        PONTO,
        VIRGULA,
        PONTO_VIRGULA,
        ABRE_PARENTESES,
        FECHA_PARENTESES,
        DOIS_PONTOS,
        IGUAL,
        MENOR,
        MAIOR,
        MAIOR_IGUAL,
        MENOR_IGUAL,
        MAIS,
        VEZES,
        DIV,
        ABRE_COLCHETES,
        FECHA_COLCHETES,
        ABRE_CHAEVES,
        FECHA_CHAVES,
        ABRE_COMETARIO_PARENTESES,
        FECHA_COMETARIO_PARENTESES,
        COMENTARIO_LINHA,
        DIFERENTE,
        RECEBE,
        ASPAS_SIMPLES,
        // palavras reservadas
        FALSE,
        TRUE,
        PROGRAM,
        BEGIN,
        END,
        VAR,
        PROCEDURE,
        FUNCTION,
        IF,
        THEN,
        ELSE,
        WHILE,
        DO,
        OR,
        AND,
        INTEGER,
        READ,
        WRITE,
        CONST,
        CHAR,
        STRING,
        REPEAT,
        BREAK,
        CONTINUE,
        UNTIL;
                
    }

    public Definicoes() {
    }

}
